/**
 */
package org.mro.grib.model.files.firstEdition.sections;

import java.nio.ByteBuffer;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Product Definition Section</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getStartOffset <em>Start Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getEndOffset <em>End Offset</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getLength <em>Length</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getParameterTableVersionNumber <em>Parameter Table Version Number</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIdentificationOfCenter <em>Identification Of Center</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getGeneratingProcessIDNumber <em>Generating Process ID Number</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getGridIdentification <em>Grid Identification</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getPresenceOfGDSorBMS <em>Presence Of GD Sor BMS</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIndicatorOfParameterAndUnits <em>Indicator Of Parameter And Units</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIndicatorOfTypeOfLevelOrLayer <em>Indicator Of Type Of Level Or Layer</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getHeightOrPressureOfLevelOrlayer <em>Height Or Pressure Of Level Orlayer</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getYearOfCentury <em>Year Of Century</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getMonthOfYear <em>Month Of Year</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getDayOfMonth <em>Day Of Month</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getHourOfDay <em>Hour Of Day</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getMinuteOfHour <em>Minute Of Hour</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getForecastTimeUnit <em>Forecast Time Unit</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getP1 <em>P1</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getP2 <em>P2</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getTimeRangeIndicator <em>Time Range Indicator</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getNumberIncludedInAverage <em>Number Included In Average</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getNumberMissingFromAveragesOrAccumulations <em>Number Missing From Averages Or Accumulations</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getCenturyOfInitialTime <em>Century Of Initial Time</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIdentificationOfSubCenter <em>Identification Of Sub Center</em>}</li>
 *   <li>{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getDecimalScaleFactorD <em>Decimal Scale Factor D</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection()
 * @model
 * @generated
 */
public interface ProductDefinitionSection extends EObject {
	/**
	 * Returns the value of the '<em><b>Start Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Start Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Start Offset</em>' attribute.
	 * @see #setStartOffset(long)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_StartOffset()
	 * @model required="true"
	 * @generated
	 */
	long getStartOffset();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getStartOffset <em>Start Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Start Offset</em>' attribute.
	 * @see #getStartOffset()
	 * @generated
	 */
	void setStartOffset(long value);

	/**
	 * Returns the value of the '<em><b>End Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>End Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>End Offset</em>' attribute.
	 * @see #setEndOffset(long)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_EndOffset()
	 * @model required="true"
	 * @generated
	 */
	long getEndOffset();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getEndOffset <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>End Offset</em>' attribute.
	 * @see #getEndOffset()
	 * @generated
	 */
	void setEndOffset(long value);

	/**
	 * Returns the value of the '<em><b>Length</b></em>' attribute.
	 * The default value is <code>"0"</code>.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Length</em>' attribute.
	 * @see #setLength(int)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_Length()
	 * @model default="0" required="true"
	 * @generated
	 */
	int getLength();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getLength <em>Length</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Length</em>' attribute.
	 * @see #getLength()
	 * @generated
	 */
	void setLength(int value);

	/**
	 * Returns the value of the '<em><b>Parameter Table Version Number</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Parameter Table Version Number</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Parameter Table Version Number</em>' attribute.
	 * @see #setParameterTableVersionNumber(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_ParameterTableVersionNumber()
	 * @model required="true"
	 * @generated
	 */
	byte getParameterTableVersionNumber();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getParameterTableVersionNumber <em>Parameter Table Version Number</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Parameter Table Version Number</em>' attribute.
	 * @see #getParameterTableVersionNumber()
	 * @generated
	 */
	void setParameterTableVersionNumber(byte value);

	/**
	 * Returns the value of the '<em><b>Identification Of Center</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Identification Of Center</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Identification Of Center</em>' attribute.
	 * @see #setIdentificationOfCenter(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_IdentificationOfCenter()
	 * @model required="true"
	 * @generated
	 */
	byte getIdentificationOfCenter();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIdentificationOfCenter <em>Identification Of Center</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Identification Of Center</em>' attribute.
	 * @see #getIdentificationOfCenter()
	 * @generated
	 */
	void setIdentificationOfCenter(byte value);

	/**
	 * Returns the value of the '<em><b>Generating Process ID Number</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Generating Process ID Number</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Generating Process ID Number</em>' attribute.
	 * @see #setGeneratingProcessIDNumber(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_GeneratingProcessIDNumber()
	 * @model required="true"
	 * @generated
	 */
	byte getGeneratingProcessIDNumber();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getGeneratingProcessIDNumber <em>Generating Process ID Number</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Generating Process ID Number</em>' attribute.
	 * @see #getGeneratingProcessIDNumber()
	 * @generated
	 */
	void setGeneratingProcessIDNumber(byte value);

	/**
	 * Returns the value of the '<em><b>Grid Identification</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Grid Identification</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Grid Identification</em>' attribute.
	 * @see #setGridIdentification(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_GridIdentification()
	 * @model required="true"
	 * @generated
	 */
	byte getGridIdentification();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getGridIdentification <em>Grid Identification</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Grid Identification</em>' attribute.
	 * @see #getGridIdentification()
	 * @generated
	 */
	void setGridIdentification(byte value);

	/**
	 * Returns the value of the '<em><b>Presence Of GD Sor BMS</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Presence Of GD Sor BMS</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Presence Of GD Sor BMS</em>' attribute.
	 * @see #setPresenceOfGDSorBMS(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_PresenceOfGDSorBMS()
	 * @model required="true"
	 * @generated
	 */
	byte getPresenceOfGDSorBMS();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getPresenceOfGDSorBMS <em>Presence Of GD Sor BMS</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Presence Of GD Sor BMS</em>' attribute.
	 * @see #getPresenceOfGDSorBMS()
	 * @generated
	 */
	void setPresenceOfGDSorBMS(byte value);

	/**
	 * Returns the value of the '<em><b>Indicator Of Parameter And Units</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Indicator Of Parameter And Units</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Indicator Of Parameter And Units</em>' attribute.
	 * @see #setIndicatorOfParameterAndUnits(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_IndicatorOfParameterAndUnits()
	 * @model required="true"
	 * @generated
	 */
	byte getIndicatorOfParameterAndUnits();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIndicatorOfParameterAndUnits <em>Indicator Of Parameter And Units</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Indicator Of Parameter And Units</em>' attribute.
	 * @see #getIndicatorOfParameterAndUnits()
	 * @generated
	 */
	void setIndicatorOfParameterAndUnits(byte value);

	/**
	 * Returns the value of the '<em><b>Indicator Of Type Of Level Or Layer</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Indicator Of Type Of Level Or Layer</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Indicator Of Type Of Level Or Layer</em>' attribute.
	 * @see #setIndicatorOfTypeOfLevelOrLayer(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_IndicatorOfTypeOfLevelOrLayer()
	 * @model required="true"
	 * @generated
	 */
	byte getIndicatorOfTypeOfLevelOrLayer();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIndicatorOfTypeOfLevelOrLayer <em>Indicator Of Type Of Level Or Layer</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Indicator Of Type Of Level Or Layer</em>' attribute.
	 * @see #getIndicatorOfTypeOfLevelOrLayer()
	 * @generated
	 */
	void setIndicatorOfTypeOfLevelOrLayer(byte value);

	/**
	 * Returns the value of the '<em><b>Height Or Pressure Of Level Orlayer</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Height Or Pressure Of Level Orlayer</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Height Or Pressure Of Level Orlayer</em>' attribute.
	 * @see #setHeightOrPressureOfLevelOrlayer(short)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_HeightOrPressureOfLevelOrlayer()
	 * @model required="true"
	 * @generated
	 */
	short getHeightOrPressureOfLevelOrlayer();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getHeightOrPressureOfLevelOrlayer <em>Height Or Pressure Of Level Orlayer</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Height Or Pressure Of Level Orlayer</em>' attribute.
	 * @see #getHeightOrPressureOfLevelOrlayer()
	 * @generated
	 */
	void setHeightOrPressureOfLevelOrlayer(short value);

	/**
	 * Returns the value of the '<em><b>Year Of Century</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Year Of Century</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Year Of Century</em>' attribute.
	 * @see #setYearOfCentury(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_YearOfCentury()
	 * @model required="true"
	 * @generated
	 */
	byte getYearOfCentury();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getYearOfCentury <em>Year Of Century</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Year Of Century</em>' attribute.
	 * @see #getYearOfCentury()
	 * @generated
	 */
	void setYearOfCentury(byte value);

	/**
	 * Returns the value of the '<em><b>Month Of Year</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Month Of Year</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Month Of Year</em>' attribute.
	 * @see #setMonthOfYear(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_MonthOfYear()
	 * @model required="true"
	 * @generated
	 */
	byte getMonthOfYear();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getMonthOfYear <em>Month Of Year</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Month Of Year</em>' attribute.
	 * @see #getMonthOfYear()
	 * @generated
	 */
	void setMonthOfYear(byte value);

	/**
	 * Returns the value of the '<em><b>Day Of Month</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Day Of Month</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Day Of Month</em>' attribute.
	 * @see #setDayOfMonth(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_DayOfMonth()
	 * @model required="true"
	 * @generated
	 */
	byte getDayOfMonth();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getDayOfMonth <em>Day Of Month</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Day Of Month</em>' attribute.
	 * @see #getDayOfMonth()
	 * @generated
	 */
	void setDayOfMonth(byte value);

	/**
	 * Returns the value of the '<em><b>Hour Of Day</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Hour Of Day</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Hour Of Day</em>' attribute.
	 * @see #setHourOfDay(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_HourOfDay()
	 * @model required="true"
	 * @generated
	 */
	byte getHourOfDay();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getHourOfDay <em>Hour Of Day</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Hour Of Day</em>' attribute.
	 * @see #getHourOfDay()
	 * @generated
	 */
	void setHourOfDay(byte value);

	/**
	 * Returns the value of the '<em><b>Minute Of Hour</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Minute Of Hour</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Minute Of Hour</em>' attribute.
	 * @see #setMinuteOfHour(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_MinuteOfHour()
	 * @model required="true"
	 * @generated
	 */
	byte getMinuteOfHour();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getMinuteOfHour <em>Minute Of Hour</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Minute Of Hour</em>' attribute.
	 * @see #getMinuteOfHour()
	 * @generated
	 */
	void setMinuteOfHour(byte value);

	/**
	 * Returns the value of the '<em><b>Forecast Time Unit</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Forecast Time Unit</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Forecast Time Unit</em>' attribute.
	 * @see #setForecastTimeUnit(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_ForecastTimeUnit()
	 * @model required="true"
	 * @generated
	 */
	byte getForecastTimeUnit();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getForecastTimeUnit <em>Forecast Time Unit</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Forecast Time Unit</em>' attribute.
	 * @see #getForecastTimeUnit()
	 * @generated
	 */
	void setForecastTimeUnit(byte value);

	/**
	 * Returns the value of the '<em><b>P1</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>P1</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>P1</em>' attribute.
	 * @see #setP1(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_P1()
	 * @model required="true"
	 * @generated
	 */
	byte getP1();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getP1 <em>P1</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>P1</em>' attribute.
	 * @see #getP1()
	 * @generated
	 */
	void setP1(byte value);

	/**
	 * Returns the value of the '<em><b>P2</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>P2</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>P2</em>' attribute.
	 * @see #setP2(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_P2()
	 * @model required="true"
	 * @generated
	 */
	byte getP2();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getP2 <em>P2</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>P2</em>' attribute.
	 * @see #getP2()
	 * @generated
	 */
	void setP2(byte value);

	/**
	 * Returns the value of the '<em><b>Time Range Indicator</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Time Range Indicator</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Time Range Indicator</em>' attribute.
	 * @see #setTimeRangeIndicator(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_TimeRangeIndicator()
	 * @model required="true"
	 * @generated
	 */
	byte getTimeRangeIndicator();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getTimeRangeIndicator <em>Time Range Indicator</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Time Range Indicator</em>' attribute.
	 * @see #getTimeRangeIndicator()
	 * @generated
	 */
	void setTimeRangeIndicator(byte value);

	/**
	 * Returns the value of the '<em><b>Number Included In Average</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Number Included In Average</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Number Included In Average</em>' attribute.
	 * @see #setNumberIncludedInAverage(short)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_NumberIncludedInAverage()
	 * @model required="true"
	 * @generated
	 */
	short getNumberIncludedInAverage();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getNumberIncludedInAverage <em>Number Included In Average</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Number Included In Average</em>' attribute.
	 * @see #getNumberIncludedInAverage()
	 * @generated
	 */
	void setNumberIncludedInAverage(short value);

	/**
	 * Returns the value of the '<em><b>Number Missing From Averages Or Accumulations</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Number Missing From Averages Or Accumulations</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Number Missing From Averages Or Accumulations</em>' attribute.
	 * @see #setNumberMissingFromAveragesOrAccumulations(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_NumberMissingFromAveragesOrAccumulations()
	 * @model required="true"
	 * @generated
	 */
	byte getNumberMissingFromAveragesOrAccumulations();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getNumberMissingFromAveragesOrAccumulations <em>Number Missing From Averages Or Accumulations</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Number Missing From Averages Or Accumulations</em>' attribute.
	 * @see #getNumberMissingFromAveragesOrAccumulations()
	 * @generated
	 */
	void setNumberMissingFromAveragesOrAccumulations(byte value);

	/**
	 * Returns the value of the '<em><b>Century Of Initial Time</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Century Of Initial Time</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Century Of Initial Time</em>' attribute.
	 * @see #setCenturyOfInitialTime(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_CenturyOfInitialTime()
	 * @model required="true"
	 * @generated
	 */
	byte getCenturyOfInitialTime();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getCenturyOfInitialTime <em>Century Of Initial Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Century Of Initial Time</em>' attribute.
	 * @see #getCenturyOfInitialTime()
	 * @generated
	 */
	void setCenturyOfInitialTime(byte value);

	/**
	 * Returns the value of the '<em><b>Identification Of Sub Center</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Identification Of Sub Center</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Identification Of Sub Center</em>' attribute.
	 * @see #setIdentificationOfSubCenter(byte)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_IdentificationOfSubCenter()
	 * @model
	 * @generated
	 */
	byte getIdentificationOfSubCenter();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getIdentificationOfSubCenter <em>Identification Of Sub Center</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Identification Of Sub Center</em>' attribute.
	 * @see #getIdentificationOfSubCenter()
	 * @generated
	 */
	void setIdentificationOfSubCenter(byte value);

	/**
	 * Returns the value of the '<em><b>Decimal Scale Factor D</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Decimal Scale Factor D</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Decimal Scale Factor D</em>' attribute.
	 * @see #setDecimalScaleFactorD(short)
	 * @see org.mro.grib.model.files.firstEdition.sections.SectionsPackage#getProductDefinitionSection_DecimalScaleFactorD()
	 * @model required="true"
	 * @generated
	 */
	short getDecimalScaleFactorD();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.firstEdition.sections.ProductDefinitionSection#getDecimalScaleFactorD <em>Decimal Scale Factor D</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Decimal Scale Factor D</em>' attribute.
	 * @see #getDecimalScaleFactorD()
	 * @generated
	 */
	void setDecimalScaleFactorD(short value);

	/**
	 * 
	 * @param buffer
	 */
	public void initialise(ByteBuffer buffer);
	
	boolean isSectionGDSPresente();

	boolean isSectionBMSPresente();
	
} // ProductDefinitionSection
